package es.antonio.duarte.abrahamAdmin.struts.actions;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.security.util.UrlUtils;
import org.springframework.util.StringUtils;

import es.antonio.duarte.abrahamAdmin.struts.Constantes;
import es.antonio.duarte.abrahamAdmin.struts.forms.CambiarLenguajeForm;

/**
 * Clase encargada de cambiar el lenguaje de la aplicación.
 */
public class CambiarLenguajeAction extends BaseAction {

   private final Log log = LogFactory.getLog(CambiarLenguajeAction.class);

   /**
    * Action encargado de cambiar el lenguaje de la aplicación a petición del
    * usuario. Si el lenguaje especificado coincide con el lenguaje del locale
    * definido en Constantes.ESPAÑOL pone este como lenguaje, si coincide con el
    * de ingles pone este, si no coincide pone el Locale por defecto.
    */
   @Override
   public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
      logDebug(log, "Comenzando CambiarLenguajeAction");
      CambiarLenguajeForm formulario = (CambiarLenguajeForm) form;
      String lenguajeSeleccionado = formulario.getLenguajeSeleccionado();
      Locale lenguajeDefecto = Locale.getDefault();
      logDebug(log, "Lenguaje seleccionado: "+lenguajeSeleccionado);
      if(lenguajeSeleccionado==null){
         logDebug(log, "No se ha seleccionado ningun lenguaje");
         setLocale(request, lenguajeDefecto);
      }
      else if (lenguajeSeleccionado.equals(
               Constantes.ESPANOL.getLanguage())) {
         logDebug(log, "Definiendo lenguaje español");
         setLocale(request, Constantes.ESPANOL);
      }else if(lenguajeSeleccionado.equals(
               Constantes.INGLES.getLanguage())){
         logDebug(log, "Definiendo lenguaje inglés");
         setLocale(request, Constantes.INGLES);
      }else{
         logDebug(log, "Definiendo lenguaje por defecto: "+lenguajeDefecto);
         setLocale(request, lenguajeDefecto);
      }
      String path=formulario.getPagina();
      ActionForward forward=new ActionForward();
      
      logDebug(log, "Devolviendo forward path: "+path);
      forward.setPath(path);
      return forward;
   }
}
